﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dominio.Logica;
using InterfazPublica;
using Dominio.Excepciones;

namespace Interfaz
{
    public partial class Pagos : Form
    {
        public Pagos()
        {
            InitializeComponent();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void Pagos_Load(object sender, EventArgs e)
        {
            comboBox1.DataSource = Agencia.ListaEntidades;
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            IJuegos j = (IJuegos)comboBox1.SelectedItem;
            try
            {
                double premio = Agencia.GetAgencia().CorrespondePremio(j, txtIdentificador.Text.ToString());
                txtPremio.Text = "" + premio;
                Log.Grabar("El usuario: " + Agencia.UsuarioLogueado + " ha consultado el premio de la apuesta: " + Agencia.GetAgencia().CorrespondePremio(j, txtIdentificador.Text.ToString()));
            }
            catch (IncorrectFormatTypeException ex) 
            {
                MessageBox.Show(ex.mensaje, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Log.Grabar("El usuario: " + Agencia.UsuarioLogueado + " ha ingresado la consulta de un identificador no válido.");
                txtIdentificador.Focus();
            }
            catch (EmptyPagosIdException ex)
            {
                MessageBox.Show(ex.mensaje, "Atención", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Log.Grabar("El usuario: " + Agencia.UsuarioLogueado + " ha consultado el premio de una apuesta con un identifiador no válido.");
                txtIdentificador.Focus();
            }
           
        }

        private void btnPagar_Click(object sender, EventArgs e)
        {
            IJuegos j = (IJuegos)comboBox1.SelectedItem;
            bool pago = false;
            try
            {
                int premio = Int32.Parse(txtPremio.Text.ToString());
                pago = false;
                if (! Agencia.GetAgencia().ApuestaYaPagada(j,txtIdentificador.Text.ToString()))
                {
                    if (premio > 0)
                    {
                        pago = Agencia.GetAgencia().EfectuarPago(j, txtIdentificador.Text.ToString(),premio);
                    }
                    Log.Grabar("OK: El pago con identificador: " + txtIdentificador.Text.ToString() + " se efectuó con éxito , por un monto de = " + premio + " acción realizada por el usuario: " + Agencia.UsuarioLogueado);
                    MessageBox.Show("El pago con identificador: " + txtIdentificador.Text.ToString() + " se efectuó con éxito, por un monto de = " + premio, "Exito", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else 
                {
                    Log.Grabar("OK: El pago con identificador: " + txtIdentificador.Text.ToString() + " ya fue pagado, acción realizada por el usuario: " + Agencia.UsuarioLogueado);
                    MessageBox.Show("El pago con identificador: " + txtIdentificador.Text.ToString() + " ya fue pagado", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                
            }
            catch (FormatException ex)
            {
                Log.Grabar("ERROR: No se pudo realizar el pago" + txtIdentificador.Text.ToString() + "Error: " + ex.Message + " acción realizada por el usuario: " + Agencia.UsuarioLogueado);
                MessageBox.Show("No se puede realizar el pago" + txtIdentificador.Text.ToString());
            }
           
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
